define([
    'Util',
    'list',
    'dialog',
    'select',
    'text!tpl/requirement/viewRequirement.tpl',
    'text!tpl/requirement/viewRequirementTable.tpl',
    'text!tpl/requirement/taskAss.tpl',
    'tab',
    'cookie',
    '../common/getPath',
    'form',
    'clipboard',
    '../common/getQueryString',
    '../common/dateFormat'
], function(Util, List, Dialog, Select, viewRequirement, viewRequirementTable, taskAss, Tab, $cookie, AjaxPath, Form, Clipboard, getQueryString) {
    require(['style!css/style.css']);
    var $el=null;
    var _indexModule = null,
        list = null,
        tab = null,
        tplId = null,
        useMode = null,
        activeInitRequire=null,
        viewRequirementData = null,
        viewRequirementTaskTable = null,
        viewRequireStatus=null,
        viewRequirementDataBeansStatus=null,
        ViewRequireNextStatus=null,
        getResult=null,
        tryPeopleData = null,
        allocateSelect=null,
        viewRequireAssSelectId = null,
        dialog = null,
        timer=null,
        clipboard = null;

    var initialize = function(indexModule, options, tabItem){
        $el = $(viewRequirement);
        _indexModule = indexModule;

        // 事件--点击切换tab后事件回调
        $(tabItem).on("tabActive", function() {
            tabItem.show(true); // 刷新表单
        });
        //console.log(viewRequirementData)
        tab = tabItem;
        this.content=$el;
        tplId = options.menuId;
        viewRequirementData = getQueryString("id") ? {id: getQueryString("id")} : options;
        // 业务相关代码

        getAuthority();
        getRequire();

    };
/*复制粘贴*/

    var copyCode = function () {
        clipboard = new Clipboard('#viewCopy', {
            text: function() {
                var s = $("#copy_text", $el).text();
                return s;
            }
        });
        clipboard.on('success', function(e) {
            clipboard.destroy();
                copyCode();
            var config = {
                mode: 'tips',
                delayRmove:1,//延迟删除秒数设定 tips默认3秒,非tips默认不关闭。
                tipsType:'success', //tips类型；可选 success | error，默认普通tips。
                maxWidth:'226px', //设置tips弹窗的最大宽度,默认为226px。仅在tips弹窗下生效，该项存在时，width属性将失效。
                content: '复制成功',
                skin: 'dialogSkin dialogSkin2'
            };
            var dialog = new Dialog(config);
        });
            
        clipboard.on('error', function(e) {
            console.log(e);
        });
    };

    var getRequire=function () {
        Util.ajax.getJson(AjaxPath.demand+"/requires/"+viewRequirementData.id+"?type=1"+ ( getQueryString("from") ? '&from=' + getQueryString("from") : ''), {}, function(result, isok) {
            if(result.returnCode==="0000"){
                //console.log(result)
                getResult=result.beans;
                getResult.createTimeDate = new Date(getResult.createTime).Format('yyyy-MM-dd hh:mm:ss');
                getResult.updateTimeDate = new Date(getResult.updateTime).Format('yyyy-MM-dd hh:mm:ss');
                viewRequirementDataBeansStatus=getResult.status;
                getResult.viewRequireStatus = "viewRequireStatus";
                getResult.viewRequireExcuter = "viewSubTaskExcuter";
                getResult.viewLinkClass = "viewLinkBtn";
                var viewCopy=getResult.commitCodeExample;
                var viewRequireTitle= "查看工作项:"+result.beans.systemName+" / "+result.beans.requireTitle;
                $('#copy_text',$el).html(viewCopy);
                if(viewCopy.length>30){
                    $('#copy_text',$el).addClass('whiteSpace');
                    $('#copy_text',$el).css({
                        "width":"300px",
                        "padding":0,
                        "lineHeight":"12px",
                        "display":"inline-block"
                    })
                    $('#copy_text',$el).attr("title",viewCopy);
                }
                if(getResult.requireType === "4"){
                    getResult.JudgeType = true;
                } else {
                    getResult.JudgeType = false;
                }
                $('.viewRequireTitle',$el).html(viewRequireTitle);
                $(".viewRequirementTable", $el).html(Util.hdb.compile(viewRequirementTable)(getResult));
                var moduleName=$('.moduleName a').text();
                var refName=$('.refName a',$el).text();
                var tagName=$('.tagName a',$el).text();
                if(moduleName.length>30){
                    $('.moduleName a',$el).css({width:"120px"});
                }
                getResult["menuId"]=tplId;
                //引用js直接传参前两个，可以直接引用html模
                    copyCode();
                    eventInit();
                    viewButton(viewRequirementDataBeansStatus);
                    appendixInit();
                    taskInit();
                    activeInit();


            }else {
                config = {
                    mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                    title:'提示',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                    modal:true,
                    content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>' // 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                };
                new Dialog(config);
            }
        });
    };

    //按钮事件
    var eventInit = function (){
        //页面除dialog按钮功能
        $el.on('click', '.btnBack', btnBack);//返回
        $el.on('click', '.makeRequire', makeRequire);//修改
        $el.on('click', '.viewStatus a', bindViewRequireNextStatus);//开发状态
        $el.on('click', '.newTask', addNewTask);//新建子工作项
        $el.on('click', '.allocated', createSubTaskAssDialog);//工作项分配uo a
        $el.on('click', '.taskAllocation', createSubTaskAssDialog);//子工作项分配
        $el.on('click', '.sliderContainer .tri', changeSlide);//折叠
        $el.on('click', '.flow-tab li', activeRecordInitTab);//活动日志切换
        $el.on('click', '.taskEditBtn', editTasks);//子工作项修改
        $el.on('mouseenter', '.viewRequireCopy', viewRequireCopyOver);//感叹号复制移入
        $el.on('mouseleave', '.viewRequireCopy', viewRequireCopyOut);//感叹号复制移出
        $el.on('click', '.viewLinkBtn a', viewLink);//；链接到
        $el.on('click', '.relationCase a', viewRelationCase);
        //$el.on('click', '#viewCopy',viewCopyT);
        $('#tabList li.' + tplId).on('click', tabActive);
    };
    var btnBack = function() {
        tab.switchTab(viewRequirementData.menuId);
        tab.destroy("viewRequirement");
        $(".ui-popup-backdrop, .ui-popup,.ui-popup-modal,.ui-popup-show,.ui-popup-focus").remove();
    };
    /*工作流测试按钮添加*/
    var viewButton=function(viewRequirementDataBeansStatus){
        // console.log(101,getResult);
        if(getResult.requireType === "4"){
            Util.ajax.getJson( AjaxPath.project + "/workFlows/getFLowActions?httpToken=devopsuseracount&modual=defect&type=defectStatus&flowFrom="+viewRequirementDataBeansStatus+"&systemId="+getResult.systemId, {}, function(result, isok){
                var viewButton="";
                if(result.beans!==null){
                    for(var i=0; i<result.beans.length; i++){
                        if(result.beans[i].description === "" || result.beans[i].description === null){
                            result.beans[i].description = "&nbsp;";
                        }
                        viewButton+='<a class="t-btn t-btn-white text-overflow viewRequireStatusNext" data="'+result.beans[i].toValue+'" style="margin: 0 5px 0 5px" >' + result.beans[i].description + '</a>';
                    }
                    $('.viewStatus').html(viewButton);
                    //console.log(result)

                }
            });

        } else {
            Util.ajax.getJson( AjaxPath.project + "/workFlows/getFLowActions?httpToken=devopsuseracount&modual=require&type=requireStatus&flowFrom="+viewRequirementDataBeansStatus+"&systemId="+getResult.systemId, {}, function(result, isok){
                var viewButton="";
                if(result.beans!==null){
                    for(var i=0; i<result.beans.length; i++){
                        if(result.beans[i].description === "" || result.beans[i].description === null){
                            result.beans[i].description = "&nbsp;";
                        }
                        viewButton+='<a class="t-btn t-btn-white text-overflow viewRequireStatusNext" data="'+result.beans[i].toValue+'" style="margin: 0 5px 0 5px" >' + result.beans[i].description + '</a>';
                    }
                    $('.viewStatus').html(viewButton);
                    //console.log(result)

                }
            });
        }
    };

    /*感叹号复制移入*/
    var viewRequireCopyOver=function () {
        timer=setTimeout(function () {
            $('.copy_show').fadeIn("slow");
        },300);
    };

    /*感叹号复制移出*/
    var viewRequireCopyOut=function () {
        clearTimeout(timer);
        $('.copy_show').fadeOut("slow");
    };
    //修改工作项
    var makeRequire= function(e) {
        tab.createTab({
            title: '修改工作项',
            closeable: 1, //是否可以关闭 0false不可以|1true可以
            className: 'editReqTab'
        });
        tab.switchTab('修改工作项');
        getResult.menuId = tplId;
        require(['js/requirement/editRequirement'], function(editRequirement) {
            var result = new editRequirement({}, getResult, tab);
            tab.content(result.content);
        });
        $(".ui-popup-backdrop, .ui-popup,.ui-popup-modal,.ui-popup-show,.ui-popup-focus").remove();
    };

    /*开发状态*/
    var bindViewRequireNextStatus = function(){
        var obj = {
            "id":getResult.id,
            "updater":$cookie.get("userId"),
            "status": $(this).attr("data"),
            "type":1
        };
        //console.log($('.text-overflow').attr("data"))
        Util.ajax.postJson(AjaxPath.demand + '/requires/status',JSON.stringify(obj), function(result, isok){
            //console.log(result);
            if (result.returnCode==="0000") {
                config = {
                    mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                    title:'提示',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                    modal:true,
                    content: '<div style="text-align:center;margin-top:50px">修改状态成功</div>' // 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                };
                ViewRequireNextStatus = new Dialog(config);
                ViewRequireNextStatus.on('onclose',function(){
                    viewButton(result.beans.status);
                    $('.viewRequireStatus').html(result.beans.statusName);
                });

            }else{
                config = {
                    mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                    title:'提示',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                    modal:true,
                    content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>'// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                };
                ViewRequireNextStatus = new Dialog(config);
            }
        },'application/json');
    };

    //新建子工作项
    var addNewTask= function(e) {
        tab.createTab({
            title: '新建子工作项',
            closeable: 1, //是否可以关闭 0false不可以|1true可以
            className: 'addSubTaskTab'
        });
        tab.switchTab('新建子工作项');
        getResult.menuId = tplId;
        require(['js/requirement/addSubTask'], function(addProjectContent) {
            var result = new addProjectContent({}, getResult, tab);
            tab.content(result.content);
        });
        $(".ui-popup-backdrop, .ui-popup,.ui-popup-modal,.ui-popup-show,.ui-popup-focus").remove();

    };

    //分配
    var subTaskAssSelect = function(id){
        Util.ajax.getJson(AjaxPath.project +'/dropdown?modual=project&type=userId&systemId='+ viewRequirementData.systemId, {}, function(result, isok){
            tryPeopleData = result.beans;
            allocateSelect = new Select({
                el:$("#viewRequireAss"),       //要绑定的容器
                ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置，<span class="s">慎用</span>
                    method:'GET'
                }, 
                label:'<i style="color:red;padding:2px;"></i>分配给:', //下拉框单元左侧label文本，可不配置
                selectText:false,       //是否显示  ‘选择|清除’  模式
                name:'tryPeople',    //下拉框单元右侧下拉框名称
                disabled:false,     //组件是否被禁用
                topOption:"", //设置最顶部option的text属性
                value:0,//初始选中项设置 默认是按value，如果你想按id设置 也可以 value:[&quot;id&quot;,1],这样设置
                textField:"value",   //设置下拉框内容，填写数据中对应的字段名
                valueField:"key",//设置下拉框value，填写数据中对应的字段名
                datas: tryPeopleData,         //数据源
                loadAtClick:false,// true--第一次点击时渲染|false或不配置--初始化时渲染
                dataReady:function(){
                    console.log("获取经办人");
                } //select的DOM结构加载完后执行
                //  url:'../data/select.json'  //数据源，不建议使用，后期将会移除
            });
            allocateSelect.setValue('"' + id + '"'); //editSubTaskData.tryPeople
        });
    };

    var createSubTaskAssDialog = function(e){
        var subTaskData = {};
        var who = null;
        if(e.target.className.indexOf("allocated")>-1){
            subTaskData = viewRequirementData;
            viewRequireAssSelectId = subTaskData.tryPeople;
            who = true;
        }else{
            subTaskData = viewRequirementTaskTable.getSelected();
            console.log(subTaskData);
            viewRequireAssSelectId = subTaskData.tryPeople;
            who = false;
        }

        var data = {};
            data.formClassName = "detailViewRequireAssForm";
            data.selectName = "viewRequireAss";
        var config = {
            mode: 'confirm', //对话框模式，默认normal标准|tips浮动层|confirm确认对话框
            title: '任务分配', //对话框标题，
            content: Util.hdb.compile(taskAss)(data), //对话框内容，可以是字符串、html代码段,tpl对象。默认为loading状态（由点组成的圈。大段代码建议使用 tpl。
            ok: function() { 
                console.log('点击了确定按钮');
                createSubTaskAss(subTaskData, who);
                return true;
            }, 
            cancel: function() {
                return true;
            },
            cancelValue: '取消', //取消按钮的文本 默认是 ‘关闭’
            okValue: '确定', //取消按钮的文本 默认是 ‘关闭’
            cancelDisplay: true, //是否显示取消按钮 默认true显示|false不显示
            width: 600, //对话框宽度，normal默认值为600，confirm默认值为300，tips默认值为240
            height: 300, //对话框高度，normal默认值为400，confirm默认值为180，tips默认值为80
            maxWidth: 240,//设置tips对话框的最大宽度,默认为240px。仅在tips对话框下生效，该项存在时，width属性将失效。
            maxHeight: 'auto', //设置tips对话框的最大高度,默认为auto。仅在tips对话框下生效，该项存在时，height属性将失效。
            padding:'0 16px 1em 10px',//(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距，即 style padding属性
            align: 'bottom left',//设置对话框与其他元素的对齐方式。仅在show(elem)与showModal(elem)传入元素时生效。默认值: "bottom left"。可选："top left" "top" "top right" "right top" "right" "right bottom" "bottom right" "bottom" "bottom left" "left bottom" "left" "left top"。
            skin: 'dialogSkin dialogSkin2',//设置对话框额外的className参数,多个className请使用空格隔开。
            fixed: false, //是否开启固定定位 默认false不开启|true开启
            quickClose: false, //点击空白处快速关闭 默认false不关闭|true关闭
            modal: true ,//是否开启模态框状态  默认false不开启|true开启,confirm默认状态为true
            backdropBackground:'#000',//设置遮罩颜色，默认 #000。
            backdropOpacity:0.7, //设置遮罩透明度，默认 0.7，取值范围：0~1 。
            beforeOpen: function() {
                console.log('对话框打开时执行。');
                subTaskAssSelect(viewRequireAssSelectId);                   
            }, //对话框打开之前执行。
            escClose:true,//esc键快速关闭对话框，默认为true
            zIndex:990   // 对话框的z-index值，默认是1024。
        };
        dialog = new Dialog(config);
    };

    var createSubTaskAss = function(datas, who){
        var config = null;
        var data = Form.serialize($('.detailViewRequireAssForm'));
            //data.updater = $cookie.get("userId");
            data.updater = $cookie.get("userId");
            data.type=1;

        Util.ajax.postJson(AjaxPath.demand + '/requires/allot/'+ datas.id, data, function(result, isok) {
            if(result.returnCode==="0000") {
                config = {
                    mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                    title:'提示',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                    modal:true,
                    content: '<div style="text-align:center;margin-top:50px">分配成功</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                };
                dialog = new Dialog(config);
                if(who){
                    viewRequireAssSelectId = result.beans.userId;
                    $(".viewSubTaskExcuter").text(result.beans.userName);
                }else{
                    viewRequirementTaskTable.search({},viewRequirementTaskTable.pageIndex);
                }
                // dialog.on('onclose',function(){
                //     back();
                // });
            } else {
                config = {
                    mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                    title:'提示',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                    modal:true,
                    content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>' // 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                };
                dialog = new Dialog(config);
            }
        });
    };

    var getEditTaskData = function(){
        Util.ajax.getJson(AjaxPath.demand + '/requires/'+ viewSubTaskData.id +'?type=2', {}, function(result, isok){
            if(result.returnCode==="0000"){
                viewSubTaskData = result.beans;
                //console.log(viewSubTaskData);
                viewRequireAssSelectId = viewSubTaskData.tryPeople;

                // var positionStr = "";
                // $(viewSubTaskData.position).each(function(index, item){
                //     positionStr += item.requireTitle + '/';
                // })
                // positionStr = positionStr.substring(0,positionStr.length-1);
                // $(".editSubTaskPosition", $el).html(positionStr);

                // getEditTaskNextStatus(editSubTaskData.status);
                // inSelect();
                // initDate();
                // fileUp();
                // fileTable();//修改时用
                // initList();
                // editSubTaskValidation();
                // formInit();
                getEditTaskNextStatus(viewSubTaskData.status);
                tables();
                fileUp();
                fileTable();
                taskInit();
                activeRecordInit();
                eventInit();
            }else {
                config = {
                    mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                    title:'提示',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                    modal:true,
                    content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                };
                dialog = new Dialog(config);
            }
        });
    };

    //折叠三角
    var changeSlide = function (){
        $(this).toggleClass('tri-left');
        $(this).parent('.t-list-title').siblings().stop().slideToggle();
    };
    //下载
    var downloadFile=function(item){
        Util.ajax.getJson(AjaxPath.project+"/uploadFile/download?id="+item.id, {}, function(result, isok) {

        })
    };
    //附件
    var appendixInit = function (){
        var config = {
            el: $('.appendixContainer', $el),
            ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置；慎用
                method:'GET'
            },
            field: {
                /* boxType: 'checkbox',*/
                key: 'id',
                items: [
                    {
                        text: '附件名称',
                        title: '',
                        name: 'fileName',
                        className: 'w90',
                        width:200,
                        click: function (e, val, item) {
                            //downloadFile(item);

                        },
                        render: function (item, val) {
                            //console.log(item);
                            return  '<a href="'+AjaxPath.project+'/uploadFile/download?id='+item.id+'">'+val+'</a>';
                        }
                    },
                    {
                        text: '附件大小',
                        title: '',
                        name: 'fileSize',
                        className: 'w90',
                        width:150,
                        render: function (item, val) {
                            if( val < 1024 ){ //如果小于1KB转化成B
                               return '<div >' + val.toFixed(2) + "B"+'<div/>';
                            }else if(val < 1024 * 1024 ){//如果小于1MB转化成KB
                                return '<div >' + (val/1024).toFixed(2) + "KB"+'<div/>';
                            }else if(val < 1024 * 1024 * 1024){ //如果小于1GB转化成MB
                                return '<div >' + (val / (1024 * 1024)).toFixed(2) + "MB"+'<div/>';
                            }else{ //其他转化成GB
                                return '<div >' +(val / (1024 * 1024 * 1024)).toFixed(2) + "GB"+'<div/>';
                            }
                        }
                    },
                    {
                        text: '上传时间',
                        title: '',
                        name: 'createTime',
                        className: 'w90',
                        width:130,
                        render: function (item, val) {
                            return new Date(val).Format("yyyy-MM-dd hh:mm:ss");
                        }
                    }]
            },
            page: {
                customPages: [5, 10, 15, 20, 30, 50], //可选择每页显示多少条
                perPage: 5, //默认每页显示多少条记录
                total: true
            },
            data: {
                url: AjaxPath.project + '/attachment?businessId='+ getResult.id +'&businessType=require'

            }
        };
        list = new List(config);
        list.search();
    };

    //子工作项
    var taskInit = function (){
        var taskConfig = {
            el: $('.taskContainer', $el),
            ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置；慎用
                method:'GET'
            },
            field: {
                boxType: 'radio',
                key: 'id',
                items: [
                    {
                        text: '子工作项名称',
                        title: '',
                        name: 'requireTitle',
                        className: 'w90',
                        width:150,
                        click: function (e, val, item) {
                            viewTasks(e,item);
                             //console.log(e,item)
                        },
                        render: function (item, val) {
                            return '<a href="javascript:;" class="text-overflow" >' + val + '</a>';
                        }
                    },
                    {
                        text: '状态',
                        name: 'statusName',
                        className: 'w90',
                        width:90
                    },
                    {
                        text: '优先级',
                        title: 'priStatusName',
                        name: 'priStatusName',
                        className: 'w120',
                        width:90
                    },
                    {
                        text: '经办人',
                        title: 'tryPeopleName',
                        name: 'tryPeopleName',
                        className: 'w120 tryPeopleName',
                        width:100
                        
                    },
                    {
                        text: '创建时间',
                        title: '',
                        name: 'createTime',
                        className: 'w90',
                        width:180,
                        render: function (item, val) {
                            return new Date(val).Format("yyyy-MM-dd hh:mm:ss");
                        }
                    },
                    {
                        text: '更新时间',
                        title: '',
                        name: 'updateTime',
                        className: 'w90',
                        width:180,
                        render: function (item, val) {
                            return new Date(val).Format("yyyy-MM-dd hh:mm:ss");
                        }
                    },
                    {
                        text: '操作',
                        title: '',
                        name: '',
                        width:130,
                        className: 'w90',
                        click: function (e, val, item) {
                            // console.log(val,item);
                        },
                        render: function (item, val) {
                            return '<div class="fn-center"><button class="t-btn t-btn-blue t-btn-xs taskAllocation" style="margin-right:8px;"><a style="color:#fff">分配</a></button><button class="t-btn t-btn-blue t-btn-xs taskEditBtn" ><a style="color:#fff">修改</a></button></div>';
                        }
                    }]
            },
            page: {
                customPages: [ 5, 10, 15, 20, 30, 50], //可选择每页显示多少条
                perPage: 5, //默认每页显示多少条记录
                total: true
            },
            data: {
                url: AjaxPath.demand + "/requires/tasks/"+getResult.id
            }
        };
        viewRequirementTaskTable = new List(taskConfig);
        viewRequirementTaskTable.search();

    };
    //查看子工作项
    var viewTasks = function(e, data){
        tab.destroy("viewRequirementTab");

        var viewRequireTable = data.data;
        viewRequireTable.menuId = tplId;
        tab.createTab({
            title: (viewRequireTable.type===1 ? '查看工作项' : viewRequireTable.type===2 ? '查看子工作项' : ''),
            closeable: 1, //是否可以关闭 0false不可以|1true可以
            className: (viewRequireTable.type===1 ? 'viewRequirement' : viewRequireTable.type===2 ? 'viewSubTaskTab' : '')
        });
        tab.switchTab(viewRequireTable.type===1 ? '查看工作项' : viewRequireTable.type===2 ? '查看子工作项' : '');

        if(viewRequireTable.type===1){
            require(['js/requirement/viewRequirement'], function(viewRequireContent) {
                var result = new viewRequireContent({}, viewRequireTable, tab);
                tab.content(result.content);

                Util.ajax.getJson(AjaxPath.demand+"/requires/"+viewRequireTable.id+"?type=1", {}, function(result, isok) {
                    if(result.returnCode==="0000"){
                        var viewTitle= "查看工作项:"+result.beans.systemName+" / "+result.beans.requireTitle;
                        //console.log(viewTitle);
                        $('.viewRequireTitle',$el).html(viewTitle);

                    }else {
                        config = {
                            mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                            title:'提示',
                            width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                            height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                            cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                            modal:true,
                            content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>' // 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                        };
                        new Dialog(config);
                    }
                });
            });
        }else if(viewRequireTable.type===2){
            require(['js/requirement/viewSubTask'], function(viewRequireContent) {
                var result = new viewRequireContent({}, viewRequireTable, tab);
                tab.content(result.content);
            });
        }

        $(".ui-popup-backdrop, .ui-popup,.ui-popup-modal,.ui-popup-show,.ui-popup-focus").remove();
    };
    /*链接点击*/
    var viewLink = function(){
        tab.destroy("viewRequirement");
        var dataType = $(this).attr("dataType");
        var dataId = $(this).attr("dataId");

        var viewSubTaskData = {};
        viewSubTaskData.menuId = tplId;
        viewSubTaskData.id = dataId;
        viewSubTaskData.type = dataType;

        // console.log(dataType,dataId,viewSubTaskData);
        tab.createTab({
            title: ( (viewSubTaskData.type==1 || viewSubTaskData.type === "3") ? '查看工作项' : viewSubTaskData.type==2 ? '查看子工作项' : ''),
            closeable: 1, //是否可以关闭 0false不可以|1true可以
            className: ( (viewSubTaskData.type==1 || viewSubTaskData.type === "3") ? 'viewRequirement' : viewSubTaskData.type==2 ? 'viewSubTaskTab' : '')
        });
        tab.switchTab( (viewSubTaskData.type==1 || viewSubTaskData.type === "3") ? '查看工作项' : viewSubTaskData.type==2 ? '查看子工作项' : '');

        if(viewSubTaskData.type==1 || viewSubTaskData.type === "3"){
            require(['js/requirement/viewRequirement'], function(viewSubTaskContent) {
                var result = new viewSubTaskContent({}, viewSubTaskData, tab);
                //console.log(viewSubTaskData);

                tab.content(result.content);
                Util.ajax.getJson(AjaxPath.demand+"/requires/"+viewSubTaskData.id+"?type=1", {}, function(result, isok) {
                    //console.log(result);
                    if(result.returnCode==="0000"){
                        var viewTitle= "查看工作项:"+result.beans.systemName+" / "+result.beans.requireTitle;
                        $('.viewRequireTitle',$el).html(viewTitle);


                    }else {
                        config = {
                            mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                            title:'提示',
                            width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                            height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                            cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                            modal:true,
                            content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>' // 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                        };
                        new Dialog(config);
                    }
                });

            });
        }else if(viewSubTaskData.type==2){
            require(['js/requirement/viewSubTask'], function(viewSubTaskContent) {
                var result = new viewSubTaskContent({}, viewSubTaskData, tab);
                tab.content(result.content);
            });
        }
        $(".ui-popup-backdrop, .ui-popup,.ui-popup-modal,.ui-popup-show,.ui-popup-focus").remove();
                
    };
    var viewRelationCase = function(){
        tab.destroy("viewRequirement");
        var dataType = $(this).attr("dataType");
        var dataId = $(this).attr("dataId");
        var dataStatus = $(this).attr("dataStatus");

        var viewCaseData = {};
        viewCaseData.menuId = tplId;
        viewCaseData.id = dataId;
        viewCaseData.type = dataType;
        viewCaseData.caseStatus = dataStatus;


        // console.log(dataType,dataId,viewSubTaskData);
        tab.createTab({
            title: "查看用例",
            closeable: 1, //是否可以关闭 0false不可以|1true可以
            className: 'viewCase'
        });
        tab.switchTab("查看用例");
            require(['js/case/viewCase'], function(viewSubTaskContent) {
                var result = new viewSubTaskContent({}, viewCaseData, tab);
                tab.content(result.content);
            });
        $(".ui-popup-backdrop, .ui-popup,.ui-popup-modal,.ui-popup-show,.ui-popup-focus").remove();
    }
    //修改子工作项
    var editTasks = function(e, index){
        tab.destroy("viewRequirementTab");

        tab.createTab({
            title: '修改子工作项',
            closeable: 1, //是否可以关闭 0false不可以|1true可以
            className: 'editSubTaskTab'
        });

        var data = viewRequirementTaskTable.getSelected();
            data.menuId = tplId;

        require(['js/requirement/editSubTask'], function(editEditContent) {
            var result = new editEditContent({}, data, tab);
            tab.content(result.content);
        });
        $(".ui-popup-backdrop, .ui-popup,.ui-popup-modal,.ui-popup-show,.ui-popup-focus").remove();

    };

    //tab活动日志
    var search = function(pageIndex) {
        var data = {
            "useMode":$(".flow-tab li.actived").attr("data")
        };
        activeInitRequire.search(data,pageIndex ? pageIndex : "");
    };

    var tabActive = function() {
        search();
    };
    var activeInit = function (){
        var config = {
            el: $('#activeRecordContainer', $el),
            ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置；慎用
                method:'GET'
            },
            field: {
                //boxType: 'checkbox',
                key: 'id',
                items: [
                    {
                        text: '',
                        title: '',
                        name: 'createrName',
                        width:100
                    },
                    {
                        text: '',
                        title: '',
                        name: '',
                        width:400,
                        className: 'text-break',
                        render: function (item, val) {
                            return '<div class="fn-left">'+"于&nbsp;&nbsp;"+ new Date(item.createTime).Format("yyyy-MM-dd hh:mm:ss")+"&nbsp;&nbsp;"+item.typeName+"了&nbsp;&nbsp;"+item.businessType+"：<a href='javascript:;' >"+item.businessTitle+"</a>"+item.content+'</div>';
                        }
                    }]
            },
            page: {
                customPages: [ 5, 10, 15, 20, 30, 50], //可选择每页显示多少条
                perPage: 5, //默认每页显示多少条记录
                total: true
            },
            data: {
                url:AjaxPath.project + '/logInfo/query?businessId='+ viewRequirementData.id +'&businessType=require'
            }
        };
        activeInitRequire = new List(config);
        activeInitRequire.search();
        activeInitRequire.on('success',function(result){
            $(".activeRecordContainer" ,$el).find(".sn-list-header").hide();
        });
    };
    var activeRecordInitTab = function(e){
        $(this).addClass('actived').siblings().removeClass('actived');
        var data={
            "type": $(this).attr("data")
        };
        activeInitRequire.search(data);
    };

    /*验证权限*/
    var getAuthority = function() {
        Util.ajax.getJson(AjaxPath.auth + '/authority/button/'+ $cookie.get("userId")+'?datas=[{"mo":"15","btnId":""}]', {}, function(result, json){
            if(result.returnCode==="0000"){
                if(result.beans[0].mo===0){
                    $('.makeRequire',$el).hide();
                    // return false;
                }else {
                    $('.makeRequire',$el).show();
                    // return true;
                }
            }
            if(viewRequirementData.tryPeople === $cookie.get("userId")){
                $(".makeRequire", $el).show();
            }
        })
        
    };
    return initialize;
});